package com.sws.rel.service.impl;

import java.util.List;
import com.sws.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sws.rel.mapper.PersonDeviceRelMapper;
import com.sws.rel.domain.PersonDeviceRel;
import com.sws.rel.service.IPersonDeviceRelService;

/**
 * 人员-设备关联管理Service业务层处理
 * 
 * @author cx
 * @date 2025-07-02
 */
@Service
public class PersonDeviceRelServiceImpl implements IPersonDeviceRelService 
{
    @Autowired
    private PersonDeviceRelMapper personDeviceRelMapper;

    /**
     * 查询人员-设备关联管理
     * 
     * @param id 人员-设备关联管理主键
     * @return 人员-设备关联管理
     */
    @Override
    public PersonDeviceRel selectPersonDeviceRelById(Long id)
    {
        return personDeviceRelMapper.selectPersonDeviceRelById(id);
    }

    /**
     * 查询人员-设备关联管理列表
     * 
     * @param personDeviceRel 人员-设备关联管理
     * @return 人员-设备关联管理
     */
    @Override
    public List<PersonDeviceRel> selectPersonDeviceRelList(PersonDeviceRel personDeviceRel)
    {
        return personDeviceRelMapper.selectPersonDeviceRelList(personDeviceRel);
    }

    /**
     * 新增人员-设备关联管理
     * 
     * @param personDeviceRel 人员-设备关联管理
     * @return 结果
     */
    @Override
    public int insertPersonDeviceRel(PersonDeviceRel personDeviceRel)
    {
        personDeviceRel.setLastSyncTime(DateUtils.getNowDate());
        personDeviceRel.setCreateTime(DateUtils.getNowDate());
        return personDeviceRelMapper.insertPersonDeviceRel(personDeviceRel);
    }

    /**
     * 修改人员-设备关联管理
     * 
     * @param personDeviceRel 人员-设备关联管理
     * @return 结果
     */
    @Override
    public int updatePersonDeviceRel(PersonDeviceRel personDeviceRel)
    {
        personDeviceRel.setUpdateTime(DateUtils.getNowDate());
        personDeviceRel.setLastSyncTime(DateUtils.getNowDate());
        return personDeviceRelMapper.updatePersonDeviceRel(personDeviceRel);
    }

    /**
     * 批量删除人员-设备关联管理
     * 
     * @param ids 需要删除的人员-设备关联管理主键
     * @return 结果
     */
    @Override
    public int deletePersonDeviceRelByIds(Long[] ids)
    {
        return personDeviceRelMapper.deletePersonDeviceRelByIds(ids);
    }

    /**
     * 删除人员-设备关联管理信息
     * 
     * @param id 人员-设备关联管理主键
     * @return 结果
     */
    @Override
    public int deletePersonDeviceRelById(Long id)
    {
        return personDeviceRelMapper.deletePersonDeviceRelById(id);
    }
    
    /**
     * 检查人员和设备是否存在关联关系
     * 
     * @param personPid 人员ID
     * @param deviceSn 设备SN
     * @return true-不存在关联(可以操作) false-已存在关联(不可操作)
     */
    @Override
    public boolean checkPersonDeviceRelNotExists(String personPid, String deviceSn)
    {
        PersonDeviceRel rel = personDeviceRelMapper.selectPersonDeviceRelByPersonIdAndDeviceSn(personPid, deviceSn);
        // 如果关联记录不存在，返回true表示可以操作
        return rel == null;
    }

    /**
     * 查询人员关联的所有设备SN
     *
     * @param personPid 人员ID
     * @return 设备SN列表
     */
    @Override
    public List<String> getDeviceSnsByPersonPid(String personPid) {
        return personDeviceRelMapper.selectDeviceSnsByPersonPid(personPid);
    }
    
    /**
     * 根据人员ID和设备SN删除关联关系
     *
     * @param personPid 人员ID
     * @param deviceSn 设备SN
     * @return 删除的记录数量
     */
    @Override
    public int deletePersonDeviceRelByPersonIdAndDeviceSn(String personPid, String deviceSn) {
        return personDeviceRelMapper.deletePersonDeviceRelByPersonIdAndDeviceSn(personPid, deviceSn);
    }
    
    /**
     * 删除指定人员的所有设备关联关系
     *
     * @param personPid 人员ID
     * @return 删除的记录数量
     */
    @Override
    public int deleteAllRelationsByPersonPid(String personPid) {
        return personDeviceRelMapper.deleteAllRelationsByPersonPid(personPid);
    }
}
